Comparison of code generation tools

This article compares variable metamodel code generation tools . Fixed metamodel code generation tools, such as UML tools, are excluded (see List of UML tools).

Name Creator OS First public release Latest stable version Software license Open source
ZumCoder MDD/MDA/ Template Based Agen Consultoria - Adilson de ALmeida Pedro Web - Online 1.0 Proprietary No
Acceleo Obeo cross-platform (Java / Eclipse) 2006 3.1.0 / 2011-06-23 Eclipse Public License Yes
Accelerator Surround Technologies Windows (C# / .NET) 2007 3.0 Proprietary No
GenerateXY DotXY Windows 5.1 Freeware No
actifsource actifsource GmbH cross-platform (Java / Eclipse) 4.6.3 / 2011-08-09 Eclipse Public License Yes
Agile Platform OutSystems Windows 2001 5.1.1.0 / 2010-11-30 Proprietary No
Apeel PHP Code Generator Pro City Business Logic Windows 2001 11.03b / 2011-09-04 Proprietary No
AtomWeaver Isomeris Windows 2010 1.2.2 / 2011-06-09 Proprietary No
GNU AutoGen Bruce Korb Unix like, Apple, WinNT [1] 5.13 / 2011-12-4 GPL Yes
CodeGenerator360 Windows (Online Tool) 2011 Freeware No
CodeSmith Windows Proprietary No
Code OnTime Code On Time LLC Windows (c# / .NET) Freeware and Subscription No
Cog Ned Batchelder cross-platform (Python) 2.1 MIT license Yes
DMS Software Reengineering Toolkit Semantic Designs Windows 2001 2.0 Proprietary No
EntiPro EntiCraft Windows Proprietary No
Genshi (templating language)[2] Edgewall Software cross-platform (Python) 2006-08-03 0.5.1 / 2008-07-09
Iron Speed Designer Iron Speed, Inc. Windows 2001 8.0.1 / 2011-03-11 Proprietary No
JCodeBox cross-platform (Java) Proprietary No
Jinja (Template engine)[3] Pocoo team cross-platform (Python) 2.1.1 BSD Yes
Kid (templating language)[4] Ryan Tomayko cross-platform (Python) 0.9.6 / 2006-12-20
Mako Michael Bayer cross-platform (Python) 0.2.3 / 2008-05-12 MIT Yes
Microsoft Visual Studio LightSwitch Microsoft Windows 2011 2011-07-26 Proprietary No
M-Power mrc cross-platform (Java) 2004 Proprietary No
MOLGENIS Morris Swertz[5] cross-platform (Java) 2004 3.3 LGPLv3 Yes
MyGeneration Windows Yes
OpenMDX cross-platform (Java) 2004-01-28 2.4 / 2009-03-26 BSD Yes
[PHPRunner] Xlinesoft Windows 2003 5.3 / 2010-10-15 Proprietary No
T4 Microsoft Windows 2005 2010 Proprietary No
Umple University of Ottawa cross-platform (Java / Eclipse) 2010 1.12 / 2011-04-21 MIT license Yes
Velocity apache[6] Apache Software Foundation cross-platform (Java) 1.6.2 / 2009-03-19 Apache License 2.0 Yes

Technical

Name Implementation Language Active; Passive [7] Model[8] Typical input Other input Typical output
[ZumCoder/MDA Template Based] PHP Passive[9] Mixed XSD, DBML, Database Schema(Mysql,SqlServer,PostegreSQL,SQLite),HTML forms,PHP class and (ZML "ZumCoder Model Language", a XML define structure Templates Any textual language, depends upon your template code, you can write your own template to ouputs the language of your preference
Acceleo Java Active Tier User-defined EMF based models (UML, Ecore, user defined metamodels) Any EMF based input (Xtext DSLs, GMF graphical models, etc.) Any textual language.
Accelerator C# Active Tier Database schema XML Schema, Templates and configuration tables C#, WPF, Silverlight, ASP.NET, WCF, WebServices(complete application)
GenerateXY Java Active Tier User-defined Models XML, CSV, Java, ... (extensible) Any textual language, predefined modules for Java, HTML, XML
actifsource Java Active Tier User-defined Models Import from UML, Ecore. Any textual language.
Agile Platform .Net Active Tier User defined models based on the OutSystems visual modeling language Java, C#, Javascript ASP.Net and JEE
Apeel PHP Code Generator Pro Delphi Passive Tier Database schema PHP, HTML, CSS Full Application - PHP, CSS, Apeel Open Source Framework.
AtomWeaver C++, Lua Active Tier Tree models built using a cooperative template system, based on the ABSE modeling approach Code in any language Any textual language
GNU AutoGen C Active Tier Autogen definitions (lists of key-value pairs or hierarchical data arranged like C structs), Autogen templates (fixed output plus inline macros for conditional or repetitive emission of code blocks or evaluation of Bourne shell or Scheme expressions) XML, CGI data Output determined by template (any language or even plain text); additional support for emitting header guards, certain licenses, option parsers, and finite state machines in C
Cog Python Active[10] Inline Any code Java C# C++ C Perl Python Ruby TCL Javascript Fortran Lisp Scheme Cobol XSLT JSP PHP Yacc SQL XML System Configuration Files
CodeGenerator360 C# Active Tier Database Schema XML Schema Stored Procedures, .NET DAL, C# ASP.NET Pages, Visual Studio 2010 Solution and Project Files
CodeOnTime C# Active Database Tables Templates and Various XML configuration tables C# ASP.NET
C++ Middleware Writer C++ Active DSL instance / Middle file Include files C++ marshalling code
DMS Software Reengineering Toolkit Several code generation DSLs (attribute grammars, tree patterns, source-to-source rewrites) Active DSLs represented as abstract syntax trees DSL instance Well-formed output language code fragments Any programming language (proven for C, C++, Java, C#, PHP, COBOL)
gSoap C / C++ WSDL specifications C / C++ code that can be used to communicate with WebServices. XML with the definitions obtained.
Iron Speed Designer C# / VB.NET Active Tier Database schema CSS ASP.NET (Full application, including C# code, VB code, XML, Stored Procedures, etc.)
Jostraca Java Active [11] Tier Any code Java Any code; Java, JSP
JCodeBox Java Tier Java Java (Full Web Application)
Microsoft Visual Studio LightSwitch C# / VB.NET Active Tier Database schema Complete Silverlight application (Desktop or Web)
MyGeneration .NET
PHPRunner PHP/ASP/C#/VB.NET Active Tier Database schema PHP, ASPX, HTML, CSS, PHP, ASP, ASP.NET (Full Web application, including C#, VB.NET, PHP, ASP code, HTML, Javascript, CSS, etc.)
Pro*C Inline SQL in C C
Spring Roo Java Active Tier Java and automatically-introspected project metadata Shell commands Java (Full Web Application including Java source, AspectJ source, XML, JSP, Spring application contexts, build tools, property files etc.)
T4 Passive T4 Template/Text File Any text format such as XML, XAML, C# files or just plain text files.
Umple Java Active Tier Java, PHP, Ruby with embedded Umple code Pure Umple code describing associations, patterns, state machines etc. Java, PHP, Ruby, ECcore, Umlet, Yuml, Textuml, JSON, Papyrus XMI
Velocity apache Java Passive [12] Tier Any code Java Java
XDocLet Active[13] Munger JavaDoc EJB support beans

References

  1. ^ GNU/Linux, BSD, Apple's OS/X, SVR4-5, HPUX, SCO OpenServer and Solaris. It is expected that it will work on any reasonably modern UNIX system with an ANSI-compliant C compiler. It also runs under WinNT, provided you have CygWin and Guile loaded.
  2. ^ Great tutorial
  3. ^ Welcome | Jinja2 (The Python Template Engine)
  4. ^ http://www.kid-templating.org
  5. ^ Swertz, Morris A.; de Brock, E. O. (Bert); van Hijum, Sacha A. F. T.; de Jong, Anne; Buist, Girbe; Baerends, Richard J. S.; Kok, Jan; Kuipers, Oscar P. et al. (2004). "Molecular Genetics Information System (MOLGENIS): alternatives in developing local experimental genomics databases". Bioinformatics 20 (13): 2075–83. doi:10.1093/bioinformatics/bth206. PMID 15059831. 
  6. ^ Apache Velocity Site - The Apache Velocity Project
  7. ^ "Active generators build code that you should not modify or should only modify in specifically marked sections which are held safe during a re-generation cycle... Passive generators build code once and then it’s up to you to maintain the code long-run. "
  8. ^ Type based on input: Code munger, Inline code expander, Mixed code generator, Partial class generator, Tier generator
  9. ^ [1]
  10. ^ The output area for each generator (between the]] and end lines) is deleted, and the output of running the Python code is inserted in its place.]
  11. ^ Jostraca should be used primarily for active code generation.
  12. ^ Open source tools are available that make the task of developing passive code generators all but trivial. One such offering is Velocity from the Apache Software Foundation.
  13. ^ MockDoclet is the base of XDocLet"MockDoclet is an active code generation tool for automatically generating mock objects"